package com.spyz.hdfs_api;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;

import java.lang.reflect.Array;
import java.net.URI;
import java.util.Arrays;

public class P6_Hdfs_api_ll_1 {
    public static void main(String[] args) throws Exception {

        URI uri = new URI("hdfs://master:8020");

        Configuration conf = new Configuration();
        conf.set("dfs.replication","2");

        String user = "root";

        FileSystem fs = FileSystem.get(uri, conf,user);

        /**
         * 获取所有文件信息
         * 参数1：目标路径
         * 参数2：是否递归
         */
        RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(
                new Path("/input"),
                true
        );

        //遍历文件
        while (listFiles.hasNext()){
            LocatedFileStatus fileStatus = listFiles.next();
            // 打印文件地址
            System.out.println("=========="+fileStatus.getPath()+"==========");
            // 打印文件权限
            System.out.println("文件权限："+fileStatus.getPermission());
            // 打印文件拥有者
            System.out.println("文件拥有者："+fileStatus.getOwner());
            // 打印文件组
            System.out.println("所在组："+fileStatus.getGroup());
            // 打印文件大小
            System.out.println("文件大小："+fileStatus.getLen());
            // 打印文件修改时间
            System.out.println("修改时间："+fileStatus.getModificationTime());
            // 打印块数量
            System.out.println("块数量："+fileStatus.getReplication());
            // 打印块大小
            System.out.println("块大小："+fileStatus.getBlockSize());
            // 打印文件名称
            System.out.println("文件名称："+fileStatus.getPath().getName());

            // 获取块信息
            BlockLocation[] blockLocations = fileStatus.getBlockLocations();
            System.out.println(Arrays.toString(blockLocations));
        }
        fs.close();
    }
}
